//实现一个函数，判断该二叉树是否对称
//思路：二叉树的左子树是该二叉树右子树的镜像二叉树
//镜像二叉树意为两颗二叉树根节点相同，但他们的左右两个子节点交换了位置


function isSymmetrical(pRoot){
    return isSymmetricalTree(pRoot,pRoot);
}

function isSymmetricalTree(node1,node2){
    if(!node1 && !node2){
        return true;
    }
    if(!node1 || !node2){
        return false;
    }
    if(node1.data != node2.data){
        return false;
    }

    return isSymmetricalTree(node1.left,node2.right) && isSymmetricalTree(node1.right,node2.left);
}


//将给定二叉树变换为原二叉树的镜像
//递归交换所有节点左右节点的位置
function Mirror(pRoot){
    if(pRoot){
        const temp = pRoot.right;
        pRoot.right = pRoot.left;
        pRoot.left = temp;
        Mirror(pRoot.right);
        Mirror(pRoot.left);
    }
    return pRoot;
}